<template>
  <!-- 新增权限的弹窗 -->
  <div>
    <el-dialog v-bind="$attrs" :title="formData.id? '编辑权限' : '新增权限'" v-on="$listeners" @open="onOpen">
      <!-- 子组件通过$attrs和$listeners批量绑定父组件传递的数据和事件 -->
      <el-form
        ref="elForm"
        :model="formData"
        :rules="rules"
        size="medium"
        label-width="100px"
      >
        <el-form-item label="权限名称" prop="name">
          <el-input
            v-model="formData.name"
            placeholder="请输入权限名称"
            clearable
            :style="{ width: '100%' }"
          >
          </el-input>
        </el-form-item>
        <el-form-item label="权限标识" prop="code">
          <el-input
            v-model="formData.code"
            placeholder="请输入权限标识"
            clearable
            :style="{ width: '100%' }"
          >
          </el-input>
        </el-form-item>
        <el-form-item label="权限描述" prop="description">
          <el-input
            v-model="formData.description"
            placeholder="请输入权限描述"
            clearable
            :style="{ width: '100%' }"
          >
          </el-input>
        </el-form-item>
        <el-form-item label="开启" prop="enVisible">
          <el-switch
            v-model="formData.enVisible"
            active-color="#00FF26"
            inactive-color="#FFFFFF"
            active-value="0"
            inactive-value="1"
          ></el-switch>
        </el-form-item>
      </el-form>
      <el-row slot="footer" type="flex" justify="center">
        <el-button @click="close">取消</el-button>
        <el-button type="primary" @click="handelConfirm">确定</el-button>
      </el-row>
    </el-dialog>
  </div>
</template>
<script>
import { addPermission, updatePermission } from '@/api/permisson'
export default {
  name: 'AddPerm',
  components: {},
  inheritAttrs: false,
  props: [],
  data() {
    return {
      formData: {
        name: undefined,
        code: undefined,
        description: undefined,
        enVisible: '0',
        pid: '0',
        type: 1
      },
      rules: {
        name: [{
          required: true,
          message: '请输入权限名称',
          trigger: 'blur'
        }],
        code: [{
          required: true,
          message: '请输入权限标识',
          trigger: 'blur'
        }],
        description: []
      }
    }
  },
  computed: {},
  watch: {},
  created() { },
  mounted() { },
  methods: {
    onOpen() { },
    onClose() {
      this.$refs['elForm'].resetFields()
    },
    close() {
      this.$emit('close') // 给父组件发消息关闭对话框
      //   console.log(this.$listeners)
      //   this.$parent.close()
      // 清空数据 因为写了数据之后 如果不直接点击确定 而是点击取消的话 再次打开数据是没有被清除的 所以要数据清除
      // 1. 手动
      //   this.form = {
      //     name: undefined,
      //     code: undefined,
      //     description: undefined,
      //     enVisible: '0'
      //   }

      // 2. 通过$options 清空数据 相当于是整个组件实例
    //   this.form = this.$options.data().form
    },
    handelConfirm() {
      this.$refs['elForm'].validate(async valid => {
        if (!valid) return
        if (this.formData.id) { // 这一步操作是为了区分编辑和新增
          // 1. 有id就显示编辑
          await updatePermission(this.formData)
        } else {
          // 2. 咩有id就显示新增
          await addPermission(this.formData)
        }
        // 调用接口 将表单的值和新增的参数传入
        // await addPermission(this.formData)
        // this.formData // 表单中原本的数据
        // ...this.$attrs.node // 父组件传递过来的数据node
        this.$message.success('新增权限成功')
        this.$parent.getPermissionList() // 通过$parent直接调用父组件的方法 刷新列表
        this.close() // 关闭对话框
      })
    }
  }
}

</script>
<style>
</style>
